﻿using ITSM.Service;
using Microsoft.AspNetCore.Mvc;

// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace ITSM.Controllers.User
{
    [Route("api/[controller]")]
    [ApiController]
    public class QRLoginController : ControllerBase
    {
        private readonly IQRLogin _qRLogin;
        public QRLoginController(IQRLogin qRLogin)
        {
            _qRLogin = qRLogin;
        }

        // GET api/<QRLoginController>/5
        [HttpGet("{RYD_LoginId}")]
        public IActionResult Get(string RYD_LoginId)
        {
            string str = _qRLogin.QueryQR(RYD_LoginId);
            return Ok(str);
        }

        // POST api/<QRLoginController>
        [HttpPost]
        public IActionResult Post()
        {
            string str = _qRLogin.CreateQR();
            if (string.IsNullOrWhiteSpace(str))
            {
                return NotFound();
            }
            return Ok(str);
        }

        // PUT api/<QRLoginController>/5
        [HttpPut]
        public async Task<IActionResult> Put(M_QRLoingPut m_QRLoingPut)
        {
            if(m_QRLoingPut == null)
            {
                return NotFound();
            }
            if (m_QRLoingPut.returnUrl == "undefined" || m_QRLoingPut.returnUrl == "null")
            {
                m_QRLoingPut.returnUrl = null;
            }
            if (!await _qRLogin.UpdataQR(m_QRLoingPut.RYD_LoginId, m_QRLoingPut.WX_Code, m_QRLoingPut.returnUrl))
            {
                return Ok(false);
            }
            return Ok(true);
        }
        public class M_QRLoingPut{
            public string? returnUrl { get; set; }
#pragma warning disable CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
            public string RYD_LoginId { get; set; }
            public string WX_Code { get; set; }
#pragma warning restore CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        }
    }
}
